System and method for performing a hardware-in-the-loop simulation using a plurality of graphical programs that share a single graphical user interface

ABSTRACT

A system and method for performing a hardware-in-the-loop simulation using a plurality of graphical programs that share a single graphical user interface. A first graphical program that models a physical system may be created. The first graphical program may be deployed on a first computer system for execution. A second graphical program that performs a measurement function may be created. A control unit may be coupled to the first computer system. The first graphical program may be executed on the first computer system to simulate operation of the physical system, wherein the control unit interacts with the first computer system. The second graphical program may be executed to measure characteristics of the operation of the control unit. A single graphical user interface comprising a first one or more graphical user interface elements for the first graphical program and a second one or more graphical user interface elements for the second graphical program may be displayed.

FIELD OF THE INVENTION

[0001] The present invention relates to the field of graphicalprogramming. In particular, the invention relates to a system and methodfor performing a hardware-in-the-loop simulation using a plurality ofgraphical programs that share a single graphical user interface.

DESCRIPTION OF THE RELATED ART

[0002] Traditionally, high level text-based programming languages havebeen used by programmers in writing application programs. Many differenthigh level programming languages exist, including BASIC, C, Java,FORTRAN, Pascal, COBOL, ADA, APL, etc. Programs written in these highlevel languages are translated to the machine language level bytranslators known as compilers or interpreters. The high levelprogramming languages in this level, as well as the assembly languagelevel, are referred to herein as text-based programming environments.

[0003] Increasingly, computers are required to be used and programmed bythose who are not highly trained in computer programming techniques.When traditional text-based programming environments are used, theuser's programming skills and ability to interact with the computersystem often become a limiting factor in the achievement of optimalutilization of the computer system.

[0004] There are numerous subtle complexities which a user must masterbefore he can efficiently program a computer system in a text-basedenvironment. The task of programming a computer system to model orimplement a process often is further complicated by the fact that asequence of mathematical formulas, mathematical steps or otherprocedures customarily used to conceptually model a process often doesnot closely correspond to the traditional text-based programmingtechniques used to program a computer system to model such a process. Inother words, the requirement that a user program in a text-basedprogramming environment places a level of abstraction between the user'sconceptualization of the solution and the implementation of a methodthat accomplishes this solution in a computer program. Thus, a useroften must substantially master different skills in order to bothconceptualize a problem or process and then to program a computer toimplement a solution to the problem or process. Since a user often isnot fully proficient in techniques for programming a computer system ina text-based environment to implement his solution, the efficiency withwhich the computer system can be utilized often is reduced.

[0005] Examples of fields in which computer systems are employed tointeract with physical systems are the fields of instrumentation,process control, industrial automation, and simulation. Computermeasurement and control of devices such as instruments or industrialautomation hardware has become increasingly desirable in view of theincreasing complexity and variety of instruments and devices availablefor use. However, due to the wide variety of possible testing andcontrol situations and environments, and also the wide array ofinstruments or devices available, it is often necessary for a user todevelop a custom program to control a desired system.

[0006] As discussed above, computer programs used to control suchsystems traditionally had to be written in text-based programminglanguages such as, for example, assembly language, C, FORTRAN, BASIC,etc. Traditional users of these systems, however, often were not highlytrained in programming techniques and, in addition, text-basedprogramming languages were not sufficiently intuitive to allow users touse these languages without training. Therefore, implementation of suchsystems frequently required the involvement of a programmer to writesoftware for control and analysis of instrumentation or industrialautomation data. Thus, development and maintenance of the softwareelements in these systems often proved to be difficult.

[0007] U.S. Pat. Nos. 4,901,221; 4,914,568; 5,291,587; 5,301,301; and5,301,336; among others, to Kodosky et al disclose a graphical systemand method for modeling a process, i.e., a graphical programmingenvironment which enables a user to easily and intuitively model aprocess. The graphical programming environment disclosed in Kodosky etal can be considered a higher and more intuitive way in which tointeract with a computer. A graphically based programming environmentcan be represented at a level above text-based high level programminglanguages such as C, Basic, Java, etc.

[0008] The method disclosed in Kodosky et al allows a user to constructa diagram using a block diagram editor. The block diagram may include aplurality of interconnected icons such that the diagram createdgraphically displays a procedure or method for accomplishing a certainresult, such as manipulating one or more input variables and/orproducing one or more output variables. The diagram may have one or moreof data flow, control flow and/or execution flow representations. Inresponse to the user constructing a diagram or graphical program usingthe block diagram editor, data structures may be automaticallyconstructed which characterize an execution procedure which correspondsto the displayed procedure. The graphical program may be compiled orinterpreted by a computer.

[0009] Therefore, Kodosky et al teaches a graphical programmingenvironment wherein a user places or manipulates icons and interconnectsor “wires up” the icons in a block diagram using a block diagram editorto create a graphical “program.” A graphical program for measuring,controlling, or modeling devices, such as instruments, processes orindustrial automation hardware, or for modeling or simulating devices,may be referred to as a virtual instrument (VI). Thus, a user can createa computer program solely by using a graphically based programmingenvironment. This graphically based programming environment may be usedfor creating virtual instrumentation systems, modeling processes,control, simulation, and numerical analysis, as well as for any type ofgeneral programming.

[0010] A graphical program may have a graphical user interface. Forexample, in creating a graphical program, a user may create a frontpanel or user interface panel. The front panel may include variousgraphical user interface elements or front panel objects, such as userinterface controls and/or indicators, that represent or display therespective input and output that will be used by the graphical programor VI, and may include other icons which represent devices beingcontrolled. The front panel may be comprised in a single window of userinterface elements, or may comprise a plurality of individual windowseach having one or more user interface elements, wherein the individualwindows may optionally be tiled together. When the controls andindicators are created in the front panel, corresponding icons orterminals may be automatically created in the block diagram by the blockdiagram editor. Alternatively, the user can place terminal icons in theblock diagram which may cause the display of corresponding front panelobjects in the front panel, either at edit time or later at run time. Asanother example, the front panel may comprise front panel objects, e.g.,the GUI, embedded in the block diagram.

[0011] During creation of the block diagram portion of the graphicalprogram, the user may select various function nodes or icons thataccomplish his desired result and connect the function nodes together.For example, the function nodes may be connected in one or more of adata flow, control flow, and/or execution flow format. The functionnodes may also be connected in a “signal flow” format, which is a subsetof data flow. The function nodes may be connected between the terminalsof the various user interface elements, e.g., between the respectivecontrols and indicators. Thus the user may create or assemble agraphical program, referred to as a block diagram, graphicallyrepresenting the desired process. The assembled graphical program may berepresented in the memory of the computer system as data structures. Theassembled graphical program, i.e., these data structures, may then becompiled or interpreted to produce machine language that accomplishesthe desired method or process as shown in the block diagram.

[0012] Input data to a graphical program may be received from any ofvarious sources, such as from a device, unit under test, a process beingmeasured or controlled, another computer program, or from a file. Also,a user may input data to a graphical program or virtual instrument usinga graphical user interface, e.g., a front panel as described above. Theinput data may propagate through the data flow block diagram orgraphical program and appear as changes on the output indicators. In aninstrumentation application, the front panel can be analogized to thefront panel of an instrument. In an industrial automation applicationthe front panel can be analogized to the MMI (Man Machine Interface) ofa device. The user may adjust the controls on the front panel to affectthe input and view the output on the respective indicators.Alternatively, the front panel may be used merely to view the input andoutput, or just the output, and the input may not be interactivelymanipulable by the user during program execution.

[0013] Thus, graphical programming has become a powerful tool availableto programmers. Graphical programming environments such as the NationalInstruments LabVIEW product have become very popular. Tools such asLabVIEW have greatly increased the productivity of programmers, andincreasing numbers of programmers are using graphical programmingenvironments to develop their software applications. In particular,graphical programming tools are being used for test and measurement,data acquisition, process control, man machine interface (MMI),supervisory control and data acquisition (SCADA) applications,simulation, machine vision applications, and motion control, amongothers.

[0014] It is often necessary or desirable to implement an application ordevelop a solution using two or more separate graphical programs. Theseparate graphical programs can be designed to work together toaccomplish the desired functionality. Having separate graphical programsmay be advantageous for various reasons. For example, separatingfunctionality of the application into different graphical programs mayhelp to increase the modularity of the application. Also, in adistributed application, the separate graphical programs may execute ondifferent computer systems.

[0015] In many cases, it would be desirable for the separate graphicalprograms to be able to share a single graphical user interface. In thisway, program output from each of the graphical programs could bedisplayed on the single graphical user interface, so that theapplication appears to the user as a single integrated application.However, in general, prior art systems do not provide the capability forseparate graphical programs to share the same graphical user interface.It would thus be desirable to provide this capability.

[0016] Many different graphical program development environmentapplications are in use today, including LabVIEW, DasyLab, and Diademfrom National Instruments, Simulink from The MathWorks, and VEE fromAgilent, among many others. The process of developing a graphicalprogram in various graphical program development environments is similarin many ways. For example, as described above, the user typicallycreates a block diagram including various interconnected nodes and/orprogrammatic structures. However, the programs developed in thesevarious graphical program development environments may differ in manyaspects. For example, the various nodes available for inclusion in ablock diagram may differ from one environment to another. For example,different graphical program development environments may supportdifferent graphical programming “languages”, such as the G languagesupported by LabVIEW. A graphical program developed using a particulargraphical program development environment may be said to be “associated”with that graphical program development environment.

[0017] For any given task, one particular graphical program developmentenvironment may be better suited than another to implement the task. Forexample, one graphical program development environment may be bestsuited for creating graphical programs for measurement or automationtasks, whereas a second graphical program development environment may bepreferred for certain simulation or modeling tasks. As another example,one graphical program development environment may have moresophisticated or powerful GUI or front panel capabilities, and it may bedesirable to include certain user interface elements from a secondgraphical program development environment. For an applicationimplemented using separate graphical programs as described above, itwould be desirable to enable program developers to develop eachgraphical program using the best-suited graphical program developmentenvironment and still have the graphical programs share a singlegraphical user interface.

SUMMARY OF THE INVENTION

[0018] One embodiment of the invention comprises a system and method forperforming a hardware-in-the-loop simulation using a plurality ofgraphical programs that share a single graphical user interface.According to hardware-in-the-loop simulation, a real product may betested in conjunction with a simulated physical system. For example,consider a control unit designed to control a physical system. It may beimpractical to test the control unit with the real physical system thecontrol unit is designed to control. For example, the tests may be tooexpensive, too dangerous, or impossible, e.g., the real physical systemmay not exist yet. Thus, it may be desirable to couple the real controlunit to a simulated physical system to perform the tests. The simulationof the physical system may execute on real-time hardware so that thesimulation closely approximates the real system. As one example,consider a control unit designed to control an automobile. It may bedesirable to test how the control unit responds in a crash situation. Byperforming a hardware-in-the-loop simulation, the crash situation can besimulated without actually crashing a real automobile.

[0019] According to one embodiment of the method, a first graphicalprogram may be created, wherein the first graphical program models aphysical system. The first graphical program may be created in a firstgraphical program development environment. For example, it may bedesirable to create the first graphical program using a first graphicalprogram development environment specialized for creating simulationprograms.

[0020] The first graphical program may be deployed on a first computersystem for execution. The first graphical program may be deployed on anyof various types of computer systems. In one embodiment, the firstcomputer system may comprise real-time hardware, such as an FPGA or DSP.In various embodiments, any of various methods may be used to deploy thefirst graphical program on the first computer system.

[0021] A control unit may be coupled to the first computer system. Forexample, the control unit may be designed to control operation of thereal physical system which is simulated by the first graphical programdeployed on the first computer system. In various embodiments, thecontrol unit may be coupled to the first computer system in any ofvarious ways. For example, the control unit may include variousinput/output ports that connect to input/output ports of the firstcomputer system (or input/output ports of devices connected to the firstcomputer system).

[0022] A second graphical program may be created, wherein the secondgraphical program performs a measurement function. For example, thesecond graphical program may be designed to gather information from thecontrol unit, e.g., to determine how well the control unit isperforming. The second graphical program may be created in a secondgraphical program development environment. For example, it may bedesirable to create the second graphical program using a secondgraphical program development environment specialized for creatingmeasurement programs.

[0023] The first graphical program may be executed on the first computersystem to simulate operation of the physical system, wherein the controlunit interacts with the first computer system. The control unit mayoperate normally, as if the control unit were controlling a realphysical system.

[0024] The second graphical program may be executed to measurecharacteristics of the operation of the control unit. The secondgraphical program may be executed in various locations, such as on thefirst computer system executing the first graphical program or on aseparate computer system.

[0025] A single graphical user interface may be displayed, wherein thesingle graphical user interface comprises a first one or more graphicaluser interface elements for the first graphical program and a second oneor more graphical user interface elements for the second graphicalprogram. The single graphical user interface may be displayed in any ofvarious locations, such as on the computer system that executes thefirst graphical program, the computer system that executes the secondgraphical program, and/or on another computer system.

[0026] The single graphical user interface may have been previouslycreated or defined in response to user input assembling the first one ormore graphical user interface elements and the second one or moregraphical user interface elements on a display. For example, the firstone or more graphical user interface elements and the second one or moregraphical user interface elements may be assembled on a single window ofa display or on a single front panel in response to user input.

[0027] The first one or more graphical user interface elements for thefirst graphical program may include input and/or output GUI elementsrelated to the simulation of the real physical system. For example, thesecond one or more graphical user interface elements may include GUIinput elements which allow the user to change various aspects of thephysical system simulation, e.g., to determine how the control unitbehaves in response. The second one or more graphical user interfaceelements may also output GUI output elements which allow the user toview variables or aspects related to the operation of the physicalsystem simulation.

[0028] The second one or more graphical user interface elements for thesecond graphical program may include input and/or output GUI elementsrelated to the performance of the control unit. For example, the secondone or more graphical user interface elements may include GUI inputelements which allow the user to change various parameters or hardwaresettings of the control unit. The second one or more graphical userinterface elements may also include GUI output elements which allow theuser to view variables or aspects related to the operation of thecontrol unit.

BRIEF DESCRIPTION OF THE DRAWINGS

[0029] A better understanding of the present invention can be obtainedwhen the following detailed description of the preferred embodiment isconsidered in conjunction with the following drawings, in which:

[0030]FIG. 1 illustrates a computer system connected through a networkto a second computer system;

[0031]FIGS. 2A and 2B illustrate representative instrumentation andprocess control systems including various I/O interface options;

[0032]FIG. 3 is a block diagram of the computer system of FIGS. 1, 2Aand 2B;

[0033]FIG. 4 is a flowchart diagram illustrating one embodiment of amethod for creating multiple graphical programs and a single userinterface used by the multiple graphical programs;

[0034]FIG. 5 is a flowchart diagram illustrating one embodiment of amethod for executing multiple graphical programs, in which programoutput from each graphical program is displayed in a single graphicaluser interface;

[0035] FIGS. 6-8 illustrate an example in which a LabVIEW graphicalprogram shares a single graphical user interface with a Simulinkgraphical program;

[0036]FIG. 9 illustrates one embodiment of a system for performing rapidcontrol prototyping, in which two graphical programs share a singlegraphical user interface;

[0037]FIG. 10 is a flowchart diagram illustrating one embodiment of amethod for performing a rapid control prototyping simulation, in whichtwo graphical programs share a single graphical user interface;

[0038]FIG. 11 illustrates another embodiment of a system for performingrapid control prototyping, in which two graphical programs share asingle graphical user interface;

[0039]FIG. 12 is a flowchart diagram illustrating another embodiment ofa method for performing a rapid control prototyping simulation, in whichtwo graphical programs share a single graphical user interface;

[0040]FIG. 13 illustrates one embodiment of a system for performing ahardware-in-the-loop simulation, in which two graphical programs share asingle graphical user interface; and

[0041]FIG. 14 is a flowchart diagram illustrating one embodiment of amethod for performing a hardware-in-the-loop, in which two graphicalprograms share a single graphical user interface.

[0042] While the invention is susceptible to various modifications andalternative forms specific embodiments are shown by way of example inthe drawings and are herein described in detail. It should be understoodhowever, that drawings and detailed description thereto are not intendedto limit the invention to the particular form disclosed, but on thecontrary the invention is to cover all modifications, equivalents andalternative following within the spirit and scope of the presentinvention as defined by the appended claims.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0043] Incorporation by Reference

[0044] The following references are hereby incorporated by reference intheir entirety as though fully and completely set forth herein.

[0045] U.S. Pat. No. 6,064,812 titled “System and Method for DevelopingAutomation Clients Using a Graphical Data Flow Program,” issued on May16, 2000.

[0046] U.S. Pat. No. 6,102,965 titled “System and Method for ProvidingClient/Server Access to Graphical Programs,” issued on Aug. 15, 2000.

[0047] U.S. Pat. No. 6,173,438 titled “Embedded Graphical ProgrammingSystem” filed Aug. 18, 1997.

[0048] U.S. Pat. No. 6,219,628 titled “System and Method for Configuringan Instrument to Perform Measurement Functions Utilizing Conversion ofGraphical Programs into Hardware Implementations,” filed Aug. 18, 1997.

[0049] U.S. patent application Ser. No. 09/136,123 titled “System andMethod for Accessing Object Capabilities in a Graphical Program,” filedAug. 18, 1998.

[0050] U.S. patent application Ser. No. 09/518,492 titled “System andMethod for Programmatically Creating a Graphical Program,” filed Mar. 3,2000.

[0051] U.S. patent application Ser. No. 09/617,600 titled “GraphicalProgramming System with Distributed Block Diagram Execution and FrontPanel Display,” filed Jun. 13, 2000.

[0052] U.S. patent application Ser. No. 09/737,639 titled “System andMethod for Automatically Configuring Program Data Exchange,” filed Dec.13, 2000.

[0053] U.S. patent application Ser. No. 09/737,528 titled “System andMethod for Automatically Configuring a Graphical Program to Publish orSubscribe to Data,” filed Dec. 13, 2000.

[0054] U.S. patent application Ser. No. 09/737,527 titled “System andMethod for Configuring a GUI Element to Publish or Subscribe to Data,”filed Dec. 13, 2000.

[0055]FIG. 1—Computer System Connected to a Network

[0056]FIG. 1 illustrates an exemplary computer network in which acomputer system 82 is connected through a network 84 to a secondcomputer system 86. The computer system 82 and the second computersystem 86 can be any of various types, as desired. The network 84 canalso be any of various types, including a LAN (local area network), WAN(wide area network), or the Internet, among others.

[0057] In one embodiment, the computer system 82 may execute twographical programs or block diagrams, both of which produce programoutput intended for display. According to one embodiment of a method forproviding a single graphical user interface (GUI) shared by a pluralityof graphical programs, described in detail below, the program output ofthe two graphical programs may be displayed in a single graphical userinterface. Also, in response to receiving user input to the singlegraphical user interface, the user input may be provided to one or bothof the graphical programs.

[0058] In one embodiment, the single graphical user interface may bedisplayed on a display of the computer system 82. In another embodiment,the single graphical user interface may be displayed on the computersystem 86. In the latter instance, the computer system 86 may receiveinformation enabling display of the program output in the singlegraphical user interface via the network 84. The above-incorporatedpatent application titled “Graphical Programming System with DistributedBlock Diagram Execution and Front Panel Display” describes oneembodiment of a method enabling graphical program execution and GUIdisplay of the graphical program output to be distributed acrossmultiple computer systems.

[0059] In one embodiment, the computer system 82 may execute onegraphical program, and the computer system 86 may execute anothergraphical program. Program output from the two graphical programs may bedisplayed in a single graphical user interface on a display of thecomputer system 82, the computer system 86, and/or another computersystem (not shown) coupled to these computer systems. User inputreceived via the single graphical user interface may be provided to thegraphical program executing on the computer system 82 and/or thegraphical program executing on the computer system 86.

[0060] As noted above, the graphical program(s) may execute in any typeof computer system. In general, the term “computer system” can bebroadly defined to encompass any device having at least one processorwhich executes instructions from a memory medium. In one embodiment, atleast one of the graphical programs may execute in a real time system,an embedded device, or in a programmable hardware device. For example,some graphical program development environments provide support forautomatically converting a graphical program to a format that can beexecuted on a programmable hardware device, such as an FPGA device, anddownloading the converted graphical program to the programmable hardwaredevice for execution.

[0061] It is noted that the invention is not limited in number to twoseparate graphical programs sharing a single graphical user interface.On the contrary, program output from any number of graphical programsmay be displayed in the single graphical user interface, and the singleGUI may receive user input to be provided to any number of graphicalprograms. Similarly as described above, the graphical programs may allexecute on the same computer system, or each graphical program mayexecute on a different computer system, or some computer systems mayexecute multiple graphical programs while others execute a singlegraphical program.

[0062] It is also noted that in one embodiment, one or more of theprograms whose output is displayed on the single graphical userinterface may not be a graphical program. For example, one of theprograms may be a text-based program, such as a C, C++, Java, VisualBasic, or other type of text-based program. However, in the preferredembodiment, at least one of the programs is a graphical program.

[0063] FIGS. 2A and 2B—Instrumentation and Industrial Automation Systems

[0064]FIGS. 2A and 2B illustrate exemplary computer systems which mayexecute one or more graphical programs whose output is displayed on asingle graphical user interface as described above. For example, thegraphical program(s) may perform an instrumentation function, such as atest and measurement function or an industrial automation function. Itis noted that the graphical programs may be stored in or used by any ofvarious other types of systems as desired and may implement any functionor application as desired. Thus, FIGS. 2A and 2B are exemplary only.

[0065]FIG. 2A illustrates an exemplary instrumentation control system100. The system 100 comprises a host computer 102 which connects to oneor more instruments. The host computer 102 may comprise a CPU, a displayscreen, memory, and one or more input devices such as a mouse orkeyboard as shown. The computer 102 connects through the one or moreinstruments to analyze, measure, or control a unit under test (UUT) orprocess 150. In one embodiment, the computer 102 may be either of thecomputers 82 or 86 shown in FIG. 1.

[0066] The one or more instruments may include one or more of a GPIBinstrument 112 and associated GPIB interface card 122, a dataacquisition board 114 and associated signal conditioning circuitry 124,a VXI instrument 116, a PXI instrument 118, a video device 132 andassociated image acquisition card 134, a motion control device 136 andassociated motion control interface card 138, and/or one or morecomputer based instrument cards 142, among other types of devices.

[0067] The GPIB instrument 112 may be coupled to the computer 102 viathe GPIB interface card 122 comprised in the computer 102. In a similarmanner, the video device 132 may be coupled to the computer 102 via theimage acquisition card 134, and the motion control device 136 may becoupled to the computer 102 through the motion control interface card138. The data acquisition board 114 may be coupled to the computer 102,and may interface through signal conditioning circuitry 124 to the UUT.The signal conditioning circuitry 124 preferably comprises an SCXI(Signal Conditioning eXtensions for Instrumentation) chassis comprisingone or more SCXI modules 126.

[0068] The GPIB card 122, the image acquisition card 134, the motioncontrol interface card 138, and the DAQ card 114 are typically pluggedin to an I/O slot in the computer 102, such as a PCI bus slot, a PC Cardslot, or an ISA, EISA or MicroChannel bus slot provided by the computer102. However, these cards 122, 134, 138 and 114 are shown external tocomputer 102 for illustrative purposes.

[0069] The VXI chassis or instrument 116 may be coupled to the computer102 via a VXI bus, MXI (e.g., MXI-3) bus, or other serial or parallelbus provided by the computer 102. The computer 102 preferably includesVXI interface logic, such as a VXI, MXI or GPIB interface card (notshown), which interfaces to the VXI chassis 116. The PXI chassis orinstrument is preferably coupled to the computer 102 through thecomputer's PCI bus.

[0070] A serial instrument (not shown) may also be coupled to thecomputer 102 through a serial port, such as an RS-232 port, USB(Universal Serial bus) or IEEE 1394 or 1394.2 bus, provided by thecomputer 102.

[0071] In typical instrumentation control systems an instrument will notbe present of each interface type, and in fact many systems may onlyhave one or more instruments of a single interface type, such as onlyGPIB instruments. The one or more instruments are coupled to the unitunder test (UUT) or process 150, or are coupled to receive fieldsignals, typically generated by transducers. The system 100 may be usedin a data acquisition and control application, in a test and measurementapplication, a process control application, or a man-machine interfaceapplication.

[0072]FIG. 2B illustrates an exemplary industrial automation system 160.The industrial automation system 160 is similar to the instrumentationor test and measurement system 100 shown in FIG. 2A. Elements which aresimilar or identical to elements in FIG. 2A have the same referencenumerals for convenience. The system 160 may comprise a computer 102which connects to one or more devices or instruments. The computer 102may comprise a CPU, a display screen, memory, and one or more inputdevices such as a mouse or keyboard as shown. The computer 102 mayconnect through the one or more devices to a process or device 150 toperform an automation function, such as MMI (Man Machine Interface),SCADA (Supervisory Control and Data Acquisition), portable ordistributed data acquisition, process control, advanced analysis, orother control. In one embodiment, the computer 102 may be either of thecomputers 82 or 86 shown in FIG. 1.

[0073] The one or more devices may include a data acquisition board 114and associated signal conditioning circuitry 124, a PXI instrument 118,a video device 132 and associated image acquisition card 134, a motioncontrol device 136 and associated motion control interface card 138, afieldbus device 170 and associated fieldbus interface card 172, a PLC(Programmable Logic Controller) 176, a serial instrument 182 andassociated serial interface card 184, or a distributed data acquisitionsystem, such as the Fieldpoint system available from NationalInstruments, among other types of devices.

[0074] The DAQ card 114, the PXI chassis 118, the video device 132, andthe image acquisition card 136 are preferably connected to the computer102 as described above. The serial instrument 182 is coupled to thecomputer 102 through a serial interface card 184, or through a serialport, such as an RS-232 port, USB, or IEEE 1394 or 1394.2 provided bythe computer 102. The PLC 176 couples to the computer 102 through aserial port, Ethernet port, or a proprietary interface. The fieldbusinterface card 172 is preferably comprised in the computer 102 andinterfaces through a fieldbus network to one or more fieldbus devices.Each of the DAQ card 114, the serial card 184, the fieldbus card 172,the image acquisition card 134, and the motion control card 138 aretypically plugged in to an I/O slot in the computer 102 as describedabove. However, these cards 114, 184, 172, 134, and 138 are shownexternal to computer 102 for illustrative purposes. In typicalindustrial automation systems a device will not be present of eachinterface type, and in fact many systems may only have one or moredevices of a single interface type, such as only PLCs. The devices arecoupled to the device or process 150.

[0075] Referring again to FIGS. 2A and 2B, the computer system(s) 102may each include a memory medium(s) on which one or more computerprograms or software components according to one embodiment of thepresent invention may be stored. For example, the memory medium maystore one or more graphical programs operable to provide program outputto a graphical user interface that is shared with another graphicalprogram. Also, the memory medium may store one or more graphical programdevelopment environments used to create such graphical programs. Asdescribed below, in one embodiment different graphical programdevelopment environments may be used to create the graphical programs;thus, the memory medium may store multiple graphical program developmentenvironments. In one embodiment, the memory medium may also storesoftware for managing the execution of the graphical program(s) and/ormanaging the display of the single graphical user interface.

[0076] It is noted that various of these software programs may be storedon different computer systems, e.g., in an embodiment such as describedabove where one of the graphical programs is executed or created on adifferent computer system or where the single graphical user interfaceis displayed on a different computer system. Also, in variousembodiments, various of the above software programs may be implementedor combined in different ways. For example, a graphical programdevelopment application may be operable to create the graphical programsas well as manage the display of the program output in the singlegraphical user interface.

[0077] The term “memory medium” is intended to include an installationmedium, e.g., a CD-ROM, floppy disks 104, or tape device; a computersystem memory or random access memory such as DRAM, SRAM, EDO RAM,Rambus RAM, etc.; or a non-volatile memory such as a magnetic media,e.g., a hard drive, or optical storage. The memory medium may compriseother types of memory as well, or combinations thereof.

[0078] In addition, the memory medium may be located in a first computerin which the programs are executed, or may be located in a seconddifferent computer which connects to the first computer over a network,such as the Internet. In the latter instance, the second computer mayprovide the program instructions to the first computer for execution.Also, the computer system 102 may take various forms, including apersonal computer system, mainframe computer system, workstation,network appliance, Internet appliance, personal digital assistant (PDA),television system or other device. In general, the term “computersystem” can be broadly defined to encompass any device having at leastone processor which executes instructions from a memory medium.

[0079]FIG. 3—Computer System Block Diagram

[0080]FIG. 3 is a block diagram of the computer system illustrated inFIGS. 1, 2A and 2B. It is noted that any type of computer systemconfiguration or architecture can be used as desired, and FIG. 3illustrates a representative PC embodiment. It is also noted that thecomputer system may be a general purpose computer system as shown inFIGS. 2A and 2B, a computer implemented on a VXI card installed in a VXIchassis, a computer implemented on a PXI card installed in a PXIchassis, or other types of embodiments. Elements of a computer notnecessary to understand the present invention have been omitted forsimplicity.

[0081] The computer 102 includes at least one central processing unit orCPU 160 which is coupled to a processor or host bus 162. The CPU 160 maybe any of various types, including an x86 processor, e.g., a Pentiumclass, a PowerPC processor, a CPU from the SPARC family of RISCprocessors, as well as others. Main memory 166 is coupled to the hostbus 162 by means of memory controller 164.

[0082] The main memory 166 may store computer programs according to oneembodiment of the present invention. For example, the main memory 166may store one or more graphical programs operable to provide programoutput to a graphical user interface that is shared with anothergraphical program. The main memory 166 may also store operating systemsoftware as well as other software for operation of the computer system,as well known to those skilled in the art.

[0083] The host bus 162 is coupled to an expansion or input/output bus170 by means of a bus controller 168 or bus bridge logic. The expansionbus 170 is preferably the PCI (Peripheral Component Interconnect)expansion bus, although other bus types can be used. The expansion bus170 includes slots for various devices such as the data acquisitionboard 114 (of FIG. 2A) and a GPIB interface card 122 which provides aGPIB bus interface to the GPIB instrument 112 (of FIG. 2A). The computer102 further comprises a video display subsystem 180 and hard drive 182coupled to the expansion bus 170.

[0084] As shown, a reconfigurable instrument 190 may also be connectedto the computer 102. The reconfigurable instrument 190 may includeconfigurable logic, such as a programmable logic device (PLD), e.g., anFPGA, or a processor and memory, which may execute a real time operatingsystem. According to one embodiment of the invention, a graphicalprogram may be downloaded and executed on the reconfigurable instrument190. For example, a graphical program development environment with whichthe graphical program is associated may provide support for downloadinga graphical program for execution on configurable logic in a real timesystem. Output from the graphical program may be displayed in agraphical user interface displayed by the video display subsystem 180,wherein the graphical user interface also displays program output ofanother graphical program.

[0085] In various embodiments, the configurable logic may be comprisedon an instrument or device connected to the computer through means otherthan an expansion slot, e.g., the instrument or device may be connectedvia an IEEE 1394 bus, USB, or other type of port. Also, the configurablelogic may be comprised on a device such as the data acquisition board114 or another device shown in FIG. 2A.

[0086]FIG. 4—Creation of Multiple Graphical Programs Sharing a CommonUser Interface

[0087]FIG. 4 is a flowchart diagram illustrating one embodiment of amethod for creating a plurality of graphical programs or block diagramswhich share a common graphical user interface or a common front panel.It is noted that the steps below may be performed in different ordersthan that shown.

[0088] As used herein, the term “graphical program” includes a programcomprising a plurality of interconnected nodes or icons, wherein theplurality of nodes or icons may be interconnected to visually indicatethe functionality of the graphical program. Each graphical program maybe said to have “graphical code” or “graphical source code”, wherein theplurality of interconnected nodes comprise the source code of thegraphical program. The term “graphical program” may comprise a blockdiagram having a plurality of interconnected nodes which visuallyindicate functionality of the program. As one example, the term“graphical program” may comprise a block diagram having a plurality ofinterconnected nodes which visually indicate functionality of a productor device being modeled, such as a control unit or other device. Agraphical program or block diagram may have one or more of data flow,control flow, execution flow, and/or state diagram representations.

[0089] Examples of graphical program development environments that maybe used to create and/or execute graphical programs include LabVIEW,DasyLab, and DiaDem from National Instruments, VEE from Agilent, WiTfrom Coreco, Vision Program Manager from PPT Vision, SoftWIRE fromMeasurement Computing, Simulink from the MathWorks, Sanscript fromNorthwoods Software, Khoros from Khoral Research, SnapMaster from HEMData, VisSim from Visual Solutions, ObjectBench by SES (Scientific andEngineering Software), and VisiDAQ from Advantech, among others.

[0090] A graphical program may also include a graphical user interfaceor front panel. The graphical user interface or front panel may compriseone or more windows or panels that include one or more input interfaceelements and one or more output interface elements, wherein the one ormore input interface elements can be used to interactively assign inputvalues to the corresponding block diagram during program execution, andthe one or more input interface elements display the assigned values,and wherein the one or more output interface elements display resultingoutput values produced by the block diagram.

[0091] In step 202, a first graphical program may be created. The firstgraphical program may be created in response to direct user input, e.g.,the user may create the first graphical program by placing or “draggingand dropping” icons or nodes on the display and interconnecting thenodes in a desired fashion. Alternatively, the first graphical programmay be programmatically created from a program specification. The firstgraphical program may be any type of graphical program and may becreated in or using any graphical program development environment, suchas LabVIEW, Simulink, VEE, or another graphical program developmentenvironment. The graphical program may include a plurality ofinterconnected nodes arranged in a block diagram, wherein theinterconnected nodes visually indicate functionality of the graphicalprogram. The first graphical program may be executed on any kind ofcomputer system or reconfigurable hardware, as described above.

[0092] In step 204, a second graphical program may be created. Thesecond graphical program may also be created in response to direct userinput or may be programmatically created. The second graphical programmay be any type of graphical program and may be created in or using anygraphical program development environment. Thus the second graphicalprogram may be created in or based on the same or a different graphicalprogram development environment as the first graphical program. Thesecond graphical program may thus be the same or a different type ofgraphical program as the first graphical program. The second graphicalprogram may be created on the same computer system as the firstgraphical program or on a different computer system. As described abovewith reference to FIG. 1, the second graphical program may execute onthe same computer system as the first graphical program or on adifferent computer system.

[0093] In the preferred embodiment, the first and second graphicalprograms comprise graphical data flow programs. In a graphical data flowprogram, data flow is the main principle or visual metaphor governingprogram design or creation. In other words, in a graphical program thatis based on a data flow model, lines or wires between nodes indicatethat data produced by one node is used by another node. Thus in a dataflow diagram, the data relationships between nodes, i.e., that dataprovided by a first node is used by a second node, is the visualmetaphor used by the user in creating the diagram.

[0094] It is noted that the actual execution model for executing a dataflow diagram may or may not use data flow execution principles. In onedata flow execution embodiment a node may execute when all data inputshave arrived at the node's input terminals. The node may then supplydata to its output terminals when the node has finished executing, andthis data may then (may immediately) pass to input terminals of othernodes in the diagram that are connected to the node's output terminals.Thus, for this type of data flow execution embodiment, execution ofdifferent portions of the program is data-driven. Some graphical programdevelopment environments also enable a layer of control flow to beintroduced in a graphical data flow program. Control flow constructs maybe placed in the data flow diagram so that an execution order fordifferent portions of the graphical program may be explicitly specifiedto force the portions to execute in a desired sequential order. Forexample, the LabVIEW graphical program development environment providessequence structures to accomplish control flow.

[0095] In step 206, a graphical user interface or front panel may becreated for the first and second graphical programs. As described belowwith reference to FIG. 5, this graphical user interface or front panelmay comprise a single graphical user interface that is shared by thefirst and second graphical programs. Thus, program output from eachgraphical program may be displayed in the graphical user interface orfront panel, and the graphical user interface or front panel may be usedto provide program input to one or more of the graphical programs.

[0096] In one embodiment, creating the graphical user interface or frontpanel may comprise specifying various GUI elements for receiving programinput and/or displaying program output. Examples of GUI elements includeGUI controls and indicators such as charts, graphs, push buttons, knobs,numeric controls, text boxes, list boxes, check boxes, menu bars,context menus, etc. For example, the LabVIEW graphical programdevelopment environment, available from National InstrumentsCorporation, provides various GUI elements for inclusion in a graphicaluser interface.

[0097] In one embodiment, the graphical user interface may be createdusing the graphical program development environment that was used increating the first graphical program or the second graphical program.Where the first and second graphical programs are created in the samegraphical program development environment, the graphical user interfaceor front panel is preferably created in that graphical programdevelopment environment. Where the first and second graphical programsare created in different graphical program development environments, thegraphical user interface or front panel is preferably created in one ofthe respective graphical program development environments.

[0098] Alternatively, in one embodiment the user may use each of two ormore graphical program development environments to specify differentrespective portions of the graphical user interface. For example, theuser may use a first graphical program development environment tospecify one or more first GUI elements in the graphical user interface,and may use a second graphical program development environment tospecify one or more second GUI elements in the graphical user interface.Thus the graphical user interface may comprise GUI elements from two ormore different graphical program development environments. Eachrespective graphical program may thus operate to interface with acorresponding subset of GUI elements that are associated with the samegraphical program development environment as the respective graphicalprogram.

[0099] In one embodiment, in order to allow GUI elements and graphicalprogram nodes from different graphical program development environmentsto communicate with each other, each of the different graphical programdevelopment environments may utilize a pre-defined applicationprogramming interface (API). For example, the GUI elements in thegraphical user interface may be software objects or components, such asActiveX controls, Java components, etc., that conform to a pre-definedAPI. This pre-defined API may allow the GUI elements to communicate withgraphical programs created according to any of various graphical programdevelopment environments. For example, a node in a graphical program mayuse the pre-defined API to publish data to and/or subscribe to data froma respective GUI element. As another example, each of the GUI elementsmay have a corresponding uniform resource locator (URL) that allowsnodes in graphical programs created in various graphical programdevelopment environments to publish data to and/or subscribe to datafrom a respective GUI element using the URL. The URL may specify the URLof the computer system in which the graphical user interface is locatedand the path of the respective GUI element in the user interface. Thus,configuring a node in a graphical program to publish or subscribe todata with a respective GUI element may involve specifying the URL of therespective GUI element with which the node is to communicate.

[0100] Communication between a graphical program and the user interfacemay occur using a defined protocol, such as TCP/IP, or the DataSocketprotocol developed by National Instruments, or any other standard orproprietary protocol.

[0101] Configuring the graphical programs to share the graphical userinterface may be performed in various ways, e.g., depending on theparticular graphical program development environment(s) used to createthe graphical programs. As noted above, the graphical user interface mayinclude various GUI controls and indicators. In many graphical programdevelopment environments, configuring a graphical program to displayprogram output on a graphical user interface involves connecting anoutput terminal of a node in the block diagram of the graphical programto a node that represents a particular GUI indicator in the graphicaluser interface, i.e., the GUI indicator that the user desires to displaythe program output. Similarly, configuring a graphical program toreceive program input from a graphical user interface may involveconnecting an input terminal of a node in the block diagram to a nodethat represents a particular GUI control in the graphical userinterface. A node that represents a GUI control or indicator may also bereferred to as a “terminal”. In configuring the multiple graphicalprograms to share a single graphical user interface, a similar techniquemay be used. Thus, when creating the graphical programs, block diagramnodes may be connected to GUI element terminals to configure the blockdiagram nodes to interact with the respective GUI elements.

[0102] In one embodiment, the GUI elements in the graphical userinterface or front panel may be specified or created first, before theterminals corresponding to the GUI elements appear in the block diagramsof the graphical programs. For example, when the user places GUIelements or front panel elements in the graphical user interface orfront panel, corresponding terminals may appear in one or more of thegraphical programs or block diagrams as nodes that may be connected toother nodes in the graphical programs. In one embodiment, when the userspecifies a GUI element, the user may specify which of one or moregraphical programs or block diagrams in which the terminals are toappear. The user may specify one or more of the graphical programs basedon which of the graphical programs are to use the respective GUI elementto receive input or display output. In another embodiment, the terminalsmay automatically appear in each graphical program, and the user mayonly “wire up” or connect the desired terminals in selected graphicalprograms that will read/write from/to the respective GUI element.

[0103] In another embodiment, the two or more graphical programs arespecified or created first, followed by creation or specification of GUIelements in the graphical user interface or front panel. In thisembodiment, the user may create each of the two or more graphicalprograms, wherein each of the graphical programs includes terminal iconsor nodes that indicate respective GUI elements. The graphical userinterface or front panel may then be automatically created based on theterminal icons or nodes in each of the graphical programs. In otherwords, GUI elements may be automatically (or manually) created for eachterminal icon or node from each graphical program.

[0104] In another embodiment, a second graphical program createdaccording to a second graphical program development environment isincluded as a sub-node or sub-program in a first graphical programcreated according to a first graphical program development environment.In this embodiment, the first and second graphical programs may eachhave GUI elements in the graphical user interface or front panel.

[0105] In one embodiment, the graphical user interface may be createdand/or stored independently of each of the graphical programs. In thiscase, at program development time the graphical program developmentenvironment(s) may enable the user to select a graphical user interfaceto use, e.g., by selecting a file representing the graphical userinterface. The graphical program development environment may then beoperable to determine the GUI elements included in the selectedgraphical user interface. Terminals corresponding to these GUI elementsmay then be automatically included in the block diagram so that the usercan connect block diagram nodes to the terminals to configure the blockdiagram to interact with the GUI elements. Alternatively, the terminalsmay be made available for selection and inclusion in the block diagram.For example, the terminals may appear in a palette, and the user mayselect the desired terminals to include in the block diagram.

[0106] In another embodiment, the graphical user interface may be moreclosely coupled with one or more of the graphical programs. For example,as the user interactively edits the graphical user interface, thegraphical program(s) may automatically be updated to reflect thechanges. For example, as described above, if the user adds a GUI elementto the graphical user interface, a corresponding terminal mayautomatically appear in the graphical program(s).

[0107]FIG. 5—Execution of the Graphical Programs and the SharedGraphical User Interface

[0108]FIG. 5 is a flowchart diagram illustrating one embodiment of amethod for executing graphical programs, in which program output fromeach graphical program is displayed in a single graphical user interfaceand/or program input is provided to each graphical program from thesingle graphical user interface.

[0109] In step 302, a first graphical program is executed. The firstgraphical program may be any type of graphical program and may becreated using any graphical program development environment, asdescribed above. The first graphical program may be executed on any kindof computer system desired, including reconfigurable hardware such as anFPGA.

[0110] In step 304, a second graphical program is executed. The secondgraphical program may also be any type of graphical program and may bethe same or a different type of graphical program as the first graphicalprogram, e.g., may be associated with the same or a different graphicalprogram development environment. As described above with reference toFIG. 1, the second graphical program may execute on the same computersystem as the first graphical program or on a different computer system.

[0111] In step 306, the first graphical program may produce firstprogram output. In step 308, the second graphical program may producesecond program output. For example, the nodes in the block diagrams ofthe graphical programs may be operable to acquire, produce, and/orprocess data and output the results. The program output may comprise anytype of output, including numeric, text, or graphical data and maycomprise output that is produced in a single instance, periodically, orcontinuously.

[0112] In step 310, the first program output and the second programoutput may be displayed in a single graphical user interface on adisplay. For example, the display may be a display of the computersystem that executes one of the first and/or the second graphicalprogram, or may be a display of a remote computer system connected via anetwork.

[0113] Where the single graphical user interface is displayed on aremote computer system, any desired method may be used to perform theremote display. One method for enabling the remote display is describedin the above-incorporated patent application titled “GraphicalProgramming System with Distributed Block Diagram Execution and FrontPanel Display”. In addition, any of various communication mechanisms maybe used to transfer data between the computer systems executing thegraphical programs and the computer system displaying the userinterface.

[0114] The single graphical user interface may comprise any type ofgraphical user interface, as desired. In the preferred embodiment, thegraphical user interface comprises a single window comprising one ormore GUI elements. Thus, output from multiple graphical programs may bedisplayed in a single window. Alternatively, the single graphical userinterface may comprise a plurality of GUI elements that are notcontained in a single window, e.g., each GUI element may have its own“window”. In an embodiment where the single graphical user interface isdisplayed on a system that does not support GUI windows, the singlegraphical user interface may comprise other elements, i.e., those GUIelements that are supported by the system. The single graphical userinterface may include GUI indicators operable to display the first andsecond program output. Also, the single graphical user interface mayinclude GUI controls for specifying program input to the first and/orthe second graphical program, as described below. Examples of GUIcontrols and indicators include charts, graphs, push buttons, knobs,numeric controls, text boxes, check boxes, list boxes, etc. An exemplarysingle graphical user interface is illustrated in FIG. 8.

[0115] As shown in steps 312 and 314, in one embodiment, the singlegraphical user interface may also be used for specifying program inputfor the first and/or the second graphical program. For example, asdescribed above, the single graphical user interface may include GUIcontrols such as push buttons, knobs, check boxes, menu bars, etc., forreceiving program input. In step 312, the program input may be receivedto the single graphical user interface. In step 314, the program inputmay be provided to at least one of the first graphical program or thesecond graphical program.

[0116] In one embodiment, the program input may be user input. That is,the user may interact with a GUI control to affect the application. Inanother embodiment, the program input may be program output of one ofthe graphical programs. For example, a first graphical program may beoperable to programmatically set a GUI control to a particular value,and a second graphical program may be operable to receive the GUIcontrol value as program input.

[0117] As indicated by the arrow from step 314 to step 306, the processof displaying the program output from the graphical programs andproviding the program input to the graphical programs may be performedmultiple times. Also, these steps may be performed in various orders. Inother words, in steps 306-314, the single graphical user interface mayseem to the user much the same as a standard graphical user interfacefor a single program.

[0118] Although the method is described above in terms of two separategraphical programs, it is noted that any number of graphical programsmay share the single graphical user interface. Also, in one embodiment,one or more graphical programs may share a single graphical userinterface with another type of program, e.g., a text-based program suchas a C, C++, Java, Visual Basic, or other type of text-based program.Also, in the description above, the single graphical user interface isused both for display of program output and for receiving program input.In other embodiments, the single graphical user interface may onlydisplay program output or may only receive program input.

[0119] The multiple graphical programs may share the single graphicaluser interface in any of various ways. For example, in one embodiment,each GUI control or indicator in the single graphical user interface maybe used by only a single graphical program. That is, for each GUIcontrol or indicator, a single graphical program receives data fromand/or provides data to the control/indicator. In another embodiment,one or more GUI elements, e.g., GUI controls or indicators, may beshared among multiple graphical programs. For example, a first graphicalprogram may provide data to a GUI control/indicator, and a secondgraphical program may receive the data from this GUI control/indicatorthat is provided by the first graphical program. An example of this typeof sharing is described below.

[0120] In another embodiment, a GUI control may provide input tomultiple graphical programs. For example, a first graphical program mayexecute on a first computer system, a second graphical program mayexecute on a second computer system, and the single graphical userinterface may be displayed on a display of a third computer system. Auser may operate a GUI control on the single graphical user interface toprovide user input to both the first and second graphical programs. Asan example, each graphical program may control an instrumentationsystem, and the GUI control may be used to specify a common setting forboth systems.

[0121] In another embodiment, multiple graphical programs may providedata to a single GUI indicator. For example, the single graphical userinterface may include a graph GUI indicator that displays measurementdata acquired from two systems, where a separate graphical programinteracts with each system. A technique for coordinating control of theshared GUI indicator among the multiple graphical programs may beutilized. For example, control may be distributed among the graphicalprograms using various methods or algorithms, such as a round-robinscheme, prioritized round-robin scheme, etc.

[0122] FIGS. 6-8: Example

[0123] As noted above, in one embodiment different graphical programdevelopment environments may be used to create the separate graphicalprograms. It may be desirable, for example, to separate thefunctionality of the application into separate graphical programs anduse the best-suited graphical program development environment toimplement each separate graphical program. In various embodiments, anycombination of graphical program development environments may be used,including LabVIEW, Simulink, and VEE, among others. FIGS. 6-8 illustratean example in which a LabVIEW graphical program shares a singlegraphical user interface with a Simulink graphical program. This is asimple example for illustrative purposes.

[0124]FIG. 6 illustrates the block diagram of the Simulink graphicalprogram. The Simulink graphical program utilizes various mathematicalfunction nodes to simulate the physical behavior of a controlled,inverted pendulum. The node labeled “reference” (also called a terminal)located on the left of the block diagram of FIG. 6 corresponds to theGUI control labeled “reference” on the graphical user interfaceillustrated in FIG. 8. The reference GUI control provides program inputto the Simulink graphical program. This program input specifies areference point affecting the motion of the controlled pendulum. TheSimulink graphical program simulates the controlled motion of thependulum, based on the specified reference point, and provides programoutput to the node labeled “animation” (also called a terminal) locatedon the right of the block diagram of FIG. 6. The animation nodecorresponds to the GUI indicator labeled “animation” on the graphicaluser interface illustrated in FIG. 8, which indicator displays thesimulated pendulum motion.

[0125]FIG. 7 illustrates the block diagram of the LabVIEW graphicalprogram. The LabVIEW graphical program generates sine data values andoutputs the data values to the node labeled “reference” (also called aterminal). The reference node corresponds to the GUI control labeled“reference” on the graphical user interface illustrated in FIG. 8.Whereas the reference GUI control provides program input to the Simulinkgraphical program, the reference GUI control receives program output ofthe LabVIEW graphical program. Thus, the LabVIEW graphical programprogrammatically sets the value of the reference GUI control, and theSimulink graphical program receives these values as program input anduses them to simulate the motion of the pendulum, and these graphicalprograms share a single graphical user interface.

[0126] Measurement and Simulation Programs Sharing a Single GraphicalUser Interface

[0127] Software simulation is often used to test and develop many typesof systems or devices. Software simulation can be performed in thedevelopment process of a product in various ways. One typical use ofsimulation is known as “rapid control prototyping (RCP)”. A goal ofrapid control prototyping is to enable new product prototypes to beimplemented and tested on real-time hardware, e.g., before the design ofthe product has been finalized and before the product has actually goneinto production. For example, according to the rapid control prototypingprocess, a control algorithm can be developed and deployed on a targetcontroller or target device. For example, the target device may includereal-time hardware that can execute the control algorithm, e.g., onconfigurable hardware such as an FPGA or DSP. The target device may bechosen to have characteristics similar to what the production devicewill have, e.g., in characteristics such as CPU, memory, I/O, etc.

[0128] The target controller or device that executes the controlalgorithm under test may be coupled to a real physical system, i.e., thephysical system that the production device will be used to control.Thus, the target device executing the control algorithm may behave muchthe same as if the production device were controlling the physicalsystem. However, the process of deploying a control algorithm on thetarget device may be performed significantly easier and more quicklythan if a production device were manufactured to test each version of acontrol algorithm under test. For example, the programming environmentused to create the control algorithm may provide support forautomatically deploying the algorithm on the target device. Thus, thedesign/test process may be a very tightly closed loop, allowing designsto be quickly and easily tested and significantly speeding up theproduct development process.

[0129] In various applications, the target device may be coupled to andmay control any of various types of physical systems. For example, if anelectronic control unit for an automobile engine is being developed, thetarget device may be coupled to an actual engine, and possibly othercomponents such as transmission, brakes, etc.

[0130] In one embodiment of a system for performing rapid controlprototyping, a measurement/control program may be utilized to measurecharacteristics of the target device and/or to control operation of thetarget device. For example, the measurement/control program may beutilized to gather information that can be analyzed to determine howwell the control algorithm under test is performing. Also, themeasurement/control program may be utilized to change operationparameters of the target device, e.g., to determine how this affects theoperation of the control algorithm under test.

[0131]FIG. 9 illustrates one embodiment of a system for performing rapidcontrol prototyping. As shown, a simulation graphical program 401 may bedeployed on a target device 403. For example, the simulation graphicalprogram may implement a control algorithm under test. The target device403 may be coupled to a physical system 410. Also, a computer system 405may be coupled to the target device 403. The computer system 405 mayexecute a measurement/control graphical program 407 to measure and/orcontrol the target device 403.

[0132] The simulation graphical program 401 may have a first one or moreassociated user interface elements, and the measurement/controlgraphical program 407 may have a second one or more associated userinterface elements. As described above, it may be desirable to display asingle graphical user interface that comprises both the first one ormore and the second one or more user interface elements. In oneembodiment, the single graphical user interface may be displayed on adisplay screen of the computer system 405. In various other embodiments,the single graphical user interface may be displayed in various otherlocations, such as on a separate computer system that is coupled to boththe computer system 405 and the target device 403.

[0133]FIG. 10 is a flowchart diagram illustrating one embodiment of amethod for performing a rapid control prototyping simulation asdescribed above. It is noted that various steps of FIG. 10 may beperformed in different orders, steps may be combined, omitted, oraltered, etc.

[0134] In step 421, a first graphical program may be created, whereinthe first graphical program models a product being designed. Forexample, in the case of a control unit under design, the first graphicalprogram may implement a control algorithm for the control unit. Thefirst graphical program may be created in a first graphical programdevelopment environment. For example, it may be desirable to create thefirst graphical program using a first graphical program developmentenvironment specialized for creating simulation programs.

[0135] In step 423, the first graphical program may be deployed on atarget device for execution. In various embodiments, any of varioustypes of target devices may be used to execute the first graphicalprogram, and any of various methods may be used to deploy the firstgraphical program on the target device. The target device may comprisereal-time configurable hardware operable to execute the first graphicalprogram. In one embodiment, the target device may be a board comprisedin a slot of a computer system, and deploying the first graphicalprogram on the target device may comprise transferring the firstgraphical program from the computer system to the board. In anotherembodiment, the target device may be external to a computer system,e.g., may be housed separately from the computer system, and deployingthe first graphical program on the target device may comprisetransferring the first graphical program from the computer system to theexternal target device. As one example, the target device may be anexternal PXI chassis connected to the computer system.

[0136] Deploying the first graphical program on the target device maycomprise storing the first graphical program in a memory of the targetdevice. In one embodiment, the memory of the target device may alsostore a graphical program execution engine for executing graphicalprograms created in the first graphical program development environment.Executing the first graphical program may thus include executing thegraphical program execution engine, which may manage execution of thefirst graphical program on the target device.

[0137] In one embodiment, deploying the first graphical program on thetarget device may comprise converting the first graphical program tomachine language code and storing the machine language code in a memoryof the target device. For example, the first graphical program may beconverted to a program in a text-based programming language, such as Cor another text-based programming language. This program may then becompiled to machine language code, and the machine language code may bestored in a memory of the target device. In one embodiment, the targetdevice may include a programmable hardware element, and the firstgraphical program may be converted to a hardware configuration program.The programmable hardware element on the target device may then beconfigured according to the hardware configuration program. It is notedthat the techniques of converting the original graphical program tovarious other formats useable for configuring the target device may belargely or completely automatized and thus may require little or noeffort on the part of the user. For example, the graphical programdevelopment environment used to create the first graphical program mayenable the user to request the first graphical program to be deployed onthe target device.

[0138] In step 425, a second graphical program may be created, whereinthe second graphical program performs a measurement function. Forexample, as described above, the second graphical program may bedesigned to measure characteristics of the target device that executesthe first graphical program. The second graphical program may be createdin a second graphical program development environment. For example, itmay be desirable to create the second graphical program using a secondgraphical program development environment specialized for creatingmeasurement programs.

[0139] In step 427, the target device may be coupled to a physicalsystem. In various embodiments, the target device may be coupled to thephysical system in any of various ways. For example, the target devicemay include various input/output ports that connect to input/outputports of the physical system. In some cases, intermediate devices may beconnected between the target device and the physical system, such asactuators that control the system and/or sensors that provide feedbackto the target device.

[0140] In step 429, the first graphical program may be executed on thetarget device to simulate operation of the product. During thisexecution, the target device may interact with the physical system. Forexample, in the case of a first graphical program that implements acontrol algorithm, the target device may execute the control algorithmto control the physical system, as described above.

[0141] In step 431, the second graphical program may be executed tomeasure characteristics of the operation of the product. As shown inFIG. 9, this may comprise executing the second graphical program on acomputer system coupled to the target device, wherein the secondgraphical program measures characteristics of the target deviceexecuting the first graphical program. The second graphical program maybe executed concurrently with, or at least partially concurrently with,execution of the first graphical program. The target devicecharacteristics measured by the second graphical program may be usefulin analyzing operation of the product being developed.

[0142] In step 433, a single graphical user interface may be displayed,wherein the single graphical user interface comprises a first one ormore graphical user interface elements for the first graphical programand a second one or more graphical user interface elements for thesecond graphical program. As described above, the single graphical userinterface may be displayed in any of various locations, such as on acomputer system that executes the second graphical program or on anothercomputer system.

[0143] The single graphical user interface may have been previouslycreated or defined in response to user input assembling the first one ormore graphical user interface elements and the second one or moregraphical user interface elements on a display. For example, the firstone or more graphical user interface elements and the second one or moregraphical user interface elements may be assembled on a single window ofa display or on a single front panel in response to user input. In oneembodiment, the first one or more graphical user interface elements maybe selected from the first graphical program development environment,and the second one or more graphical user interface elements may beselected from the second graphical program development environment. Inone embodiment, the first one or more graphical user interface elementsmay be selected from the first graphical program developmentenvironment, and the single graphical user interface may be created inthe second graphical program development environment, wherein creatingthe single graphical user interface comprises including the first one ormore graphical user interface elements selected from the first graphicalprogram development environment in the single graphical user interface.The second one or more graphical user interface elements may then beselected from the second graphical program development environment.

[0144] In another embodiment, both the first one or more graphical userinterface elements and the second one or more graphical user interfaceelements may be selected from the second graphical program developmentenvironment, or both the first one or more elements and the second oneor more elements may be selected from the first graphical programdevelopment environment.

[0145] The first one or more graphical user interface elements for thefirst graphical program may include input and/or output GUI elementsrelated to the operation of or the modeling performed by the firstgraphical program. For example, the first one or more graphical userinterface elements may include GUI input elements which allow the userto change various parameters affecting the modeling of the product oraffect a control algorithm implemented by the first graphical program.The first one or more graphical user interface elements may also includeGUI output elements which allow the user to view variables or aspectsrelated to the modeling of the product.

[0146] The second one or more graphical user interface elements for thesecond graphical program may include input and/or output GUI elementsrelated to the performance or operation of the target device. Forexample, the second one or more graphical user interface elements mayinclude GUI input elements which allow the user to adjust operation ofthe measurement function during execution of the second graphicalprogram. The second one or more graphical user interface elements mayalso include GUI input elements which allow the user to change variousparameters or hardware settings of the target device, e.g., to determinehow the first graphical program behaves in response. The second one ormore graphical user interface elements may also include GUI outputelements which allow the user to view variables or aspects related tothe operation of the target device or performance of the controlalgorithm.

[0147] In another embodiment of a system for performing rapid controlprototyping, a measurement/control program may be utilized to measurecharacteristics of the physical system and/or to control operation ofthe physical system. For example, the measurement/control program may beutilized to gather information from the physical system that can beanalyzed to determine how well the target device is controlling thephysical system. Also, the measurement/control program may be utilizedto control the physical system, e.g., to determine how the target deviceresponds to a change in one or more variables of the physical system.

[0148]FIG. 11 illustrates another embodiment of a system for performingrapid control prototyping. As shown, a simulation graphical program 401may be deployed on a target device 403, similarly as in FIG. 9. Forexample, the simulation graphical program may implement a controlalgorithm under test. The target device 403 may again be coupled to aphysical system 410. In this embodiment, the computer system 405 may becoupled to the physical system 410. The computer system 405 may executea measurement/control graphical program 407 to measure and/or controlthe physical system 410. In another embodiment, the measurement/controlgraphical program 407 may also measure and/or control the target device403.

[0149] Similarly as described above with reference to FIG. 9, thesimulation graphical program 401 may have a first one or more associateduser interface elements, and the measurement/control graphical program407 may have a second one or more associated user interface elements. Itmay be desirable to display a single graphical user interface thatcomprises both the first one or more and the second one or more userinterface elements. In one embodiment, the single graphical userinterface may be displayed on a display screen of the computer system405. Thus, the computer system 405 may be coupled to the target device403, in addition to being coupled to the physical system 410. In variousother embodiments, the single graphical user interface may be displayedin various other locations, such as on a separate computer system thatis coupled to both the computer system 405 and the target device 403.

[0150]FIG. 12 is a flowchart diagram illustrating one embodiment of amethod for performing a rapid control prototyping simulation asdescribed above with reference to FIG. 11. It is noted that varioussteps of FIG. 12 may be performed in different orders, steps may becombined, omitted, or altered, etc.

[0151] In step 451, a first graphical program may be created, whereinthe first graphical program models a product being designed. The firstgraphical program may be created in a first graphical programdevelopment environment. Step 451 is similar to step 421 of FIG. 10.

[0152] In step 453, the first graphical program may be deployed on atarget device for execution. Step 453 is similar to step 423 of FIG. 10.

[0153] In step 455, a second graphical program may be created, whereinthe second graphical program performs a measurement function. The secondgraphical program may be created in a second graphical programdevelopment environment. Step 455 is similar to step 425 of FIG. 10.

[0154] In step 457, the target device may be coupled to a physicalsystem. Step 457 is similar to step 427 of FIG. 10.

[0155] In step 459, the first graphical program may be executed on thetarget device to simulate operation of the product. During thisexecution, the target device may interact with the physical system,e.g., to control the physical system. Step 459 is similar to step 429 ofFIG. 10.

[0156] In step 461, the second graphical program may be executed tomeasure characteristics of the operation of the physical system. Asshown in FIG. 9, this may comprise executing the second graphicalprogram on a computer system coupled to the physical system. Forexample, the second graphical program may be utilized to gatherinformation from the physical system that can be analyzed to determinehow well the target device is controlling the physical system.

[0157] In step 463, a single graphical user interface may be displayed,wherein the single graphical user interface comprises a first one ormore graphical user interface elements for the first graphical programand a second one or more graphical user interface elements for thesecond graphical program. As described above, the single graphical userinterface may be displayed in any of various locations, such as on acomputer system that executes the second graphical program or on anothercomputer system.

[0158] As described above with reference to FIG. 10, the first one ormore graphical user interface elements for the first graphical programmay include input and/or output GUI elements related to the modelingperformed by the first graphical program. The second one or moregraphical user interface elements for the second graphical program mayinclude input and/or output GUI elements related to the performance ofthe physical system. For example, the second one or more graphical userinterface elements may include GUI input elements which allow the userto change various aspects of the physical system, e.g., to determine howthe target device behaves in response. The second one or more graphicaluser interface elements may also include GUI output elements which allowthe user to view variables or aspects related to the operation of thephysical system.

[0159] Another typical use of simulation is known as“hardware-in-the-loop” simulation. With hardware-in-the-loop simulation,a real product may be tested in conjunction with a simulated physicalsystem. For example, consider a control unit designed to control aphysical system. It may be impractical to test the control unit with thereal physical system the control unit is designed to control. Forexample, the tests may be too expensive, too dangerous, or impossible,e.g., the real physical system may not exist yet. Thus, it may bedesirable to couple the real control unit to a simulated physical systemto perform the tests. The simulation of the physical system may executeon real-time hardware so that the simulation closely approximates thereal system. As one example, consider a control unit designed to controlan automobile. It may be desirable to test how the control unit respondsin a crash situation. By performing a hardware-in-the-loop simulation,the crash situation can be simulated without actually crashing a realautomobile.

[0160] In one embodiment of a system for performing ahardware-in-the-loop simulation, a measurement/control program may beutilized to measure characteristics of the real product being tested,e.g., a real control unit, and/or to control operation of the realproduct. For example, the measurement/control program may be utilized togather information that can be analyzed to determine how well the realproduct under test is performing. Also, the measurement/control programmay be utilized to change operation parameters of the real product,e.g., to determine how this affects the operation of product under test.

[0161]FIG. 13 illustrates one embodiment of a system for performing ahardware-in-the-loop simulation. As shown, a simulation graphicalprogram 465 may be executed on a computer system 463. The simulationgraphical program 465 may simulate operation of any of various types ofphysical systems, e.g., an automobile, a chemical process, a hydraulicsystem, etc. In various embodiments, the simulation graphical program465 may execute on any of various types of computer system 463. Forexample, the computer system 463 may comprise a PC or workstation, amainframe computer system, real-time hardware, or any combination ofthese and other types of computer systems.

[0162] The computer system 463 may be coupled to the real product undertest, such as a real control unit 461. As shown, a computer system 467may also be connected to the control unit 461, wherein the computersystem 467 executes a measurement/control graphical program 469. Themeasurement/control graphical program 469 may interact with the controlunit 461, e.g., to gather information to determine how well the controlunit 461 is performing, and/or to control operation of the control unit461. In another embodiment, the measurement/control graphical program469 may execute on the same computer system as the simulation graphicalprogram, i.e., the computer system 463.

[0163] The simulation graphical program 465 may have a first one or moreassociated user interface elements, and the measurement/controlgraphical program 469 may have a second one or more associated userinterface elements. As described above, it may be desirable to display asingle graphical user interface that comprises both the first one ormore and the second one or more user interface elements. In oneembodiment, the single graphical user interface may be displayed on adisplay screen of the computer system 467, as shown in FIG. 13. Invarious other embodiments, the single graphical user interface may bedisplayed in various other locations, such as on the computer system 463or on a separate computer system that is coupled to both the computersystem 463 and the computer system 467.

[0164]FIG. 14 is a flowchart diagram illustrating one embodiment of amethod for performing a hardware-in-the-loop simulation as describedabove. It is noted that various steps of FIG. 12 may be performed indifferent orders, steps may be combined, omitted, or altered, etc.

[0165] In step 471, a first graphical program may be created, whereinthe first graphical program models a physical system. The firstgraphical program may be created in a first graphical programdevelopment environment. For example, it may be desirable to create thefirst graphical program using a first graphical program developmentenvironment specialized for creating simulation programs.

[0166] In step 473, the first graphical program may be deployed on afirst computer system for execution. The first graphical program may bedeployed on any of various types of computer systems. In one embodiment,the first computer system may comprise real-time hardware, such as anFPGA or DSP. Similarly as described above, in various embodiments, anyof various methods may be used to deploy the first graphical program onthe first computer system.

[0167] In step 475, a control unit may be coupled to the first computersystem. For example, the control unit may be designed to controloperation of the real physical system which is simulated by the firstgraphical program deployed on the first computer system. In variousembodiments, the control unit may be coupled to the first computersystem in any of various ways. For example, the control unit may includevarious input/output ports that connect to input/output ports of thefirst computer system (or input/output ports of devices connected to thefirst computer system).

[0168] In step 477, a second graphical program may be created, whereinthe second graphical program performs a measurement function. Forexample, the second graphical program may be designed to gatherinformation from the control unit, e.g., to determine how well thecontrol unit is performing. The second graphical program may be createdin a second graphical program development environment. For example, itmay be desirable to create the second graphical program using a secondgraphical program development environment specialized for creatingmeasurement programs.

[0169] In step 479, the first graphical program may be executed on thefirst computer system to simulate operation of the physical system,wherein the control unit interacts with the first computer system. Thecontrol unit may operate normally, as if the control unit werecontrolling a real physical system.

[0170] In step 481, the second graphical program may be executed tomeasure characteristics of the operation of the control unit. The secondgraphical program may be executed in various locations, such as on thefirst computer system executing the first graphical program or on aseparate computer system.

[0171] In step 483, a single graphical user interface may be displayed,wherein the single graphical user interface comprises a first one ormore graphical user interface elements for the first graphical programand a second one or more graphical user interface elements for thesecond graphical program. The single graphical user interface may bedisplayed in any of various locations, such as on the computer systemthat executes the first graphical program, the computer system thatexecutes the second graphical program, and/or on another computersystem. Step 483 is similar to step 433, described above.

[0172] The first one or more graphical user interface elements for thefirst graphical program may include input and/or output GUI elementsrelated to the simulation of the real physical system. For example, thesecond one or more graphical user interface elements may include GUIinput elements which allow the user to change various aspects of thephysical system simulation, e.g., to determine how the control unitbehaves in response. The second one or more graphical user interfaceelements may also output GUI output elements which allow the user toview variables or aspects related to the operation of the physicalsystem simulation.

[0173] The second one or more graphical user interface elements for thesecond graphical program may include input and/or output GUI elementsrelated to the performance of the control unit. For example, the secondone or more graphical user interface elements may include GUI inputelements which allow the user to change various parameters or hardwaresettings of the control unit. The second one or more graphical userinterface elements may also include GUI output elements which allow theuser to view variables or aspects related to the operation of thecontrol unit.

[0174] It may also be desirable to perform a pure software simulation ofboth a control unit and its environment. Thus, in another embodiment,one graphical program may simulate a real product, and another graphicalprogram may simulate a real physical system, i.e., the environment inwhich the real product is intended to operate.

[0175] As one example, consider an automobile wheel traction controlunit under development. A first graphical program, referred to herein asthe simulation program, may be written to simulate the wheel tractioncontrol unit, and a second graphical program, referred to herein as themeasurement program, may be written to simulate the environment in whichthe wheel traction control unit operates, i.e., the automobile. Forexample, the measurement program may provide simulated input values tothe wheel traction control unit simulation program, such as the currentamount of fuel input to the engine, an amount of braking currentlyapplied by the automobile's driver, a current amount of slip for eachwheel, etc. In response to these input values, the wheel tractioncontrol unit simulation program may produce various output valuesaffecting the simulated automobile's wheels. The measurement program mayreceive these output values as feedback and compute new simulated inputvalues to pass back to the wheel traction control unit simulationprogram.

[0176] Thus, the two programs may operate together, providing feedbackto each other to simulate how an actual wheel traction control unitwould respond under real world conditions. (The designation of one ofthe graphical programs as the “simulation” program and the other as the“measurement” program is somewhat arbitrary, since both programs mayhave both simulation and measurement aspects.)

[0177] According to one embodiment, the simulation and measurementprograms may be written as two separate graphical programs, and thegraphical programs may share a single graphical user interface. As oneexample, the simulation program may be a Simulink graphical program, andthe measurement program may be a LabVIEW graphical program. The singlegraphical user interface may include a first subset of GUI elements forthe measurement program and a second subset of GUI elements for thesimulation program. For example, the first subset of GUI elements mayinclude GUI controls for receiving user input values specifyingvariables of the automobile, such as the current fuel input to theengine, current amount of braking applied, etc. Also, the first subsetof GUI elements may include GUI indicators for displaying variables ofthe automobile, such as the current speed, current amount of slip foreach wheel, etc.

[0178] The second subset of GUI elements may include GUI controls forreceiving user input values affecting certain internal variables used bythe wheel traction control unit in computing traction control outputvalues. The second subset of GUI elements may also include GUIindicators for displaying various internal values produced by the wheeltraction control unit.

[0179] Thus, the user may interact with the GUI controls on the singlegraphical user interface to determine optimal internal variable valuesfor use in the wheel traction control unit under various environmentalconditions. Although the wheel traction simulation is implemented by twoseparate graphical programs, the single graphical user interface mayappear to the user as one seamless application.

[0180] In one embodiment, one or both of the measurement graphicalprogram and the simulation graphical program may be executed on ahardware device, such as a DSP or FPGA device, as described above. Forexample, executing the simulation graphical program on a hardware devicemay help to more closely approximate how an actual wheel tractioncontrol unit would operate.

[0181] Although the embodiments above have been described inconsiderable detail, numerous variations and modifications will becomeapparent to those skilled in the art once the above disclosure is fullyappreciated. It is intended that the following claims be interpreted toembrace all such variations and modifications.

We claim:
 1. A method for evaluating operation of a control unit, themethod comprising: creating a first graphical program that models aphysical system, wherein the first graphical program is created in afirst graphical program development environment; deploying the firstgraphical program on a first computer system for execution; creating asecond graphical program that performs a measurement function, whereinthe second graphical program is created in a second graphical programdevelopment environment, wherein the second graphical programdevelopment environment is different than the first graphical programdevelopment environment; coupling a control unit to the first computersystem; executing the first graphical program on the first computersystem to simulate operation of the physical system, wherein the controlunit interacts with the first computer system; executing the secondgraphical program to measure characteristics of the operation of thecontrol unit; and displaying a single graphical user interfacecomprising a first one or more graphical user interface elements for thefirst graphical program and a second one or more graphical userinterface elements for the second graphical program.
 2. The method ofclaim 1, wherein the first one or more graphical user interface elementsfor the first graphical program display one or more parameters relatedto operation of the first graphical program.
 3. The method of claim 2,wherein the first graphical program comprises a model of the physicalsystem; wherein the one or more parameters affect operation of the modelof the physical system.
 4. The method of claim 3, further comprising:receiving user input to one of the first one or more graphical userinterface elements to adjust operation of the first graphical programduring said executing the first graphical program; wherein the userinput operates to adjust the model of the physical system.
 5. The methodof claim 1, wherein the first one or more graphical user interfaceelements for the first graphical program display information related tosimulation of the physical system.
 6. The method of claim 1, wherein thesecond one or more graphical user interface elements for the secondgraphical program display measured characteristics relating to operationof the control unit.
 7. The method of claim 1, further comprising:receiving user input to one of the second one or more graphical userinterface elements to adjust operation of the measurement functionduring said executing the second graphical program.
 8. The method ofclaim 1, wherein the second one or more graphical user interfaceelements for the second graphical program display information related toperformance of the control unit.
 9. The method of claim 1, furthercomprising: receiving user input to one of the second one or moregraphical user interface elements to adjust operation of the controlunit.
 10. The method of claim 1, further comprising: coupling a secondcomputer system to the control unit; wherein said executing the secondgraphical program comprises executing the second graphical program onthe second computer system.
 11. The method of claim 10, wherein thesecond graphical program is executable to cause the second computersystem to interface with the control unit through one or moreinstruments to measure characteristics of the control unit.
 12. Themethod of claim 10, further comprising: displaying the single graphicaluser interface on one or more of: a display screen of the first computersystem; and a display screen of the second computer system.
 13. Themethod of claim 1, wherein said control unit interacting with the firstcomputer system comprises the control unit affecting the simulatedoperation of the physical system.
 14. The method of claim 1, wherein thefirst computer system comprises a real-time computer system.
 15. Themethod of claim 1, wherein the first computer system is a board includedin a slot of a second computer system; wherein said deploying the firstgraphical program on the first computer system for execution comprisesconfiguring the board to execute the first graphical program.
 16. Themethod of claim 1, wherein the first computer system is external to asecond computer system; wherein said deploying the first graphicalprogram on the first computer system for execution comprisestransferring the first graphical program from the first computer systemto the second computer system.
 17. The method of claim 1, wherein saiddeploying the first graphical program on the first computer systemcomprises storing the first graphical program in a memory of the firstcomputer system.
 18. The method of claim 17, wherein the memory of thefirst computer system stores a graphical program execution engine forexecuting graphical programs created in the first graphical programdevelopment environment; wherein said executing the first graphicalprogram includes executing the graphical program execution engine. 19.The method of claim 1, wherein said deploying the first graphicalprogram on the first computer system comprises: converting the firstgraphical program to machine language code; and storing the machinelanguage code in a memory of the first computer system.
 20. The methodof claim 1, wherein said deploying the first graphical program on thefirst computer system comprises: converting the first graphical programto a program in a text-based programming language; compiling the programin the text-based programming language to machine language code; andstoring the machine language code in a memory of the first computersystem.
 21. The method of claim 1, wherein the first computer systemincludes a programmable hardware element; wherein said deploying thefirst graphical program on the first computer system comprises:converting the first graphical program to a hardware configurationprogram; and configuring the programmable hardware element on the firstcomputer system according to the hardware configuration program.
 22. Themethod of claim 1, wherein said control unit interacting with the firstcomputer system comprises the control unit controlling the firstcomputer system.
 23. The method of claim 1, further comprising:assembling the first one or more graphical user interface elements andthe second one or more graphical user interface elements on a display inresponse to user input.
 24. The method of claim 1, further comprising:assembling the first one or more graphical user interface elements andthe second one or more graphical user interface elements on a singlewindow of a display in response to user input.
 25. The method of claim1, wherein the first one or more graphical user interface elements areselected from the first graphical program development environment; andwherein the second one or more graphical user interface elements areselected from the second graphical program development environment. 26.The method of claim 1, wherein the first one or more graphical userinterface elements and the second one or more graphical user interfaceelements are selected from the second graphical program developmentenvironment.
 27. The method of claim 1, wherein the first one or moregraphical user interface elements and the second one or more graphicaluser interface elements are selected from the first graphical programdevelopment environment.
 28. The method of claim 1, further comprising:creating the single graphical user interface in response to user input,wherein said creating includes selecting the first one or more graphicaluser interface elements from the first graphical program developmentenvironment and selecting the second one or more graphical userinterface elements from the second graphical program developmentenvironment.
 29. The method of claim 1, further comprising: selectingthe first one or more graphical user interface elements from the firstgraphical program development environment; creating the single graphicaluser interface in the second graphical program development environment,wherein said creating comprises including the first one or moregraphical user interface elements selected from the first graphicalprogram development environment in the single graphical user interface.30. The method of claim 29, wherein said creating the single graphicaluser interface in the second graphical program development environmentincludes selecting the second one or more graphical user interfaceelements from the second graphical program development environment. 31.The method of claim 1, wherein the single graphical user interfacecomprises a single window containing the first one or more graphicaluser interface elements and the second one or more graphical userinterface elements.
 32. The method of claim 1, wherein the singlegraphical user interface comprises a single front panel containing thefirst one or more graphical user interface elements and the second oneor more graphical user interface elements.
 33. The method of claim 1,wherein the first one or more graphical user interface elementscomprise: one or more graphical user interface elements for receivinguser input and providing the user input to the first graphical program;and one or more graphical user interface elements for displaying outputfrom the first graphical program.
 34. The method of claim 1, wherein thesecond one or more graphical user interface elements comprise: one ormore graphical user interface elements for receiving user input andproviding the user input to the second graphical program; and one ormore graphical user interface elements for displaying output from thesecond graphical program.
 35. The method of claim 1, wherein saidexecuting the second graphical program is performed concurrently with atleast a portion of said executing the first graphical program.
 36. Themethod of claim 1, wherein the measured characteristics of the operationof the control unit are useful in analyzing operation of the controlunit.
 37. The method of claim 1, wherein the first graphical programcomprises a plurality of interconnected nodes which visually indicatefunctionality of the first graphical program.
 38. The method of claim 1,wherein the second graphical program comprises a plurality ofinterconnected nodes which visually indicate functionality of the secondgraphical program.
 39. The method of claim 1, wherein the firstgraphical program comprises a block diagram.
 40. The method of claim 1,wherein the second graphical program comprises a block diagram.
 41. Themethod of claim 1, wherein the first graphical program comprises one ofa data flow diagram or a control flow diagram; and wherein the secondgraphical program comprises one of a data flow diagram or a control flowdiagram.
 42. The method of claim 1, wherein the first graphical programcomprises one of a data flow diagram and/or a state transition diagram;wherein the second graphical program comprises a data flow diagram. 43.The method of claim 1, wherein the first graphical program comprises aSimulink diagram.
 44. The method of claim 1, wherein the secondgraphical program comprises a LabVIEW diagram.
 45. The method of claim1, wherein the method performs a hardware-in-the-loop simulation.
 46. Asystem for evaluating operation of a control unit, the systemcomprising: a first computer system configured to execute a firstgraphical program, wherein the first graphical program models a physicalsystem, wherein the first graphical program was created in a firstgraphical program development environment; a control unit coupled to thefirst computer system; a second computer system coupled to the controlunit, wherein the second computer system is configured to execute asecond graphical program, wherein the second graphical program performsa measurement function, wherein the second graphical program was createdin a second graphical program development environment, wherein thesecond graphical program development environment is different than thefirst graphical program development environment; wherein the firstcomputer system is operable to execute the first graphical program tosimulate operation of the physical system; wherein the control unit isoperable to interact with the first computer system to affect thesimulated operation of the physical system; wherein the second computersystem is operable to execute the second graphical program to measurecharacteristics of operation of the control unit; and wherein one ormore of the first computer system and the second computer system areoperable to display a single graphical user interface comprising a firstone or more graphical user interface elements for the first graphicalprogram and a second one or more graphical user interface elements forthe second graphical program.
 47. The system of claim 46, wherein thefirst one or more graphical user interface elements for the firstgraphical program display one or more parameters related to operation ofthe first graphical program; wherein the first graphical programcomprises a model of the physical system; wherein the one or moreparameters affect operation of the model of the physical system; whereinthe system further comprises a user input device for receiving userinput to one of the first one or more graphical user interface elementsto adjust operation of the first graphical program; wherein the userinput operates to adjust the model of the physical system.
 48. Thesystem of claim 46, wherein the second one or more graphical userinterface elements for the second graphical program display measuredcharacteristics relating to operation of the control unit; wherein thesystem further comprises a user input device for receiving user input toone of the second one or more graphical user interface elements toadjust operation of the measurement function.
 49. The system of claim46, wherein the second one or more graphical user interface elements forthe second graphical program display information related to performanceof the control unit; wherein the system further comprises a user inputdevice for receiving user input to one of the second one or moregraphical user interface elements to adjust operation of the controlunit.
 50. The system of claim 46, wherein the first computer systemincludes a processor and memory; wherein the memory of the firstcomputer system stores the first graphical program; wherein the memoryof the first computer system also stores a graphical program executionengine for executing graphical programs created in the first graphicalprogram development environment; wherein the processor in the firstcomputer system is operable to execute the graphical program executionengine in executing the first graphical program.
 51. The system of claim46, wherein the first computer system includes a processor and memory;wherein the memory of the first computer system stores executable codecreated from the first graphical program; and wherein the processor inthe first computer system is operable to execute the executable code.52. The system of claim 46, wherein the first computer system includes aprogrammable hardware element; wherein the programmable hardware elementis configured with a hardware configuration program based on the firstgraphical program.
 53. The system of claim 46, wherein the singlegraphical user interface comprises a single window containing the firstone or more graphical user interface elements and the second one or moregraphical user interface elements.
 54. The system of claim 46, whereinthe first graphical program comprises a plurality of interconnectednodes which visually indicate functionality of the first graphicalprogram.
 55. The system of claim 46, wherein the second graphicalprogram comprises a plurality of interconnected nodes which visuallyindicate functionality of the second graphical program.
 56. The systemof claim 46, wherein the firs t graphical program comprises a data flowdiagram; and wherein the second graphical program comprises one of adata flow diagram or a control flow diagram.
 57. The system of claim 46,wherein the system performs a hardware-in-the-loop simulation.
 58. Amethod for performing a hardware-in-the-loop simulation, the methodcomprising: creating a first graphical program that models a physicalsystem, wherein the first graphical program is created in a firstgraphical program development environment; deploying the first graphicalprogram on a first computer system for execution; creating a secondgraphical program that performs a measurement function, wherein thesecond graphical program is created in a second graphical programdevelopment environment, wherein the second graphical programdevelopment environment is different than the first graphical programdevelopment environment; coupling a control unit to the first computersystem; executing the first graphical program on the first computersystem to simulate operation of the physical system, wherein the controlunit interacts with the first computer system; executing the secondgraphical program to measure characteristics of the operation of thecontrol unit; and displaying a single graphical user interfacecomprising a first one or more graphical user interface elements for thefirst graphical program and a second one or more graphical userinterface elements for the second graphical program.
 59. A system forperforming a hardware-in-the-loop simulation, the system comprising: afirst computer system configured to execute a first graphical program,wherein the first graphical program models a physical system, whereinthe first graphical program was created in a first graphical programdevelopment environment; a control unit coupled to the first computersystem; a second computer system coupled to the control unit, whereinthe second computer system is configured to execute a second graphicalprogram, wherein the second graphical program performs a measurementfunction, wherein the second graphical program was created in a secondgraphical program development environment, wherein the second graphicalprogram development environment is different than the first graphicalprogram development environment; wherein the first computer system isoperable to execute the first graphical program to simulate operation ofthe physical system; wherein the control unit is operable to interactwith the first computer system to affect the simulated operation of thephysical system; wherein the second computer system is operable toexecute the second graphical program to measure characteristics ofoperation of the control unit; and wherein one or more of the firstcomputer system and the second computer system are operable to display asingle graphical user interface comprising a first one or more graphicaluser interface elements for the first graphical program and a second oneor more graphical user interface elements for the second graphicalprogram.
 60. The system of claim 59, wherein the control unit isdesigned to control the physical system that the first graphical programmodels.